iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0
自我挑戰組

純新手學習 JavaScript系列 第 6

新手學習JavaScript: Day06 - 自動轉型規則與指派運算子

  • 分享至 

  • xImage
  •  

昨天我們提到了使用兩個等號 「==」的比較運算式下,如果兩個運算元型別不一樣,那JavaScript會在背後進行自動轉型。今天就來讓我們好好瞭解轉型的規則吧!

自動轉型規則

  • 「字串」與「數字」做比較時,則會將字串透過Number()轉型為數字,再進行比較。

  • 「布林值」與其他型別做比較時會先將true轉型為數字1,false轉行為數字0。

  • 如果其中一方是物件而另一方是基本型別,會用 valueOf() 方法取得基本型別的值,再比較。

再來看看範例:

var a = 10;
var b = "10";

cosole.log(a == b); //true 
// 因為字串轉為數字10,所以得到true

true == "true" // false
// true 轉為1,1跟字串"true",那字串"false"會變成NaN,最後比較結果是 false

false == "false" // false
// true 轉為0,0跟字串"false",那字串"false"會變成NaN,最後比較結果是 false

接下來我們來看看大小的比較,也就是大於、小於、大於等於以及小於等於。

var a = 5;
var b = 10;
var c = 15;
var d = 10;


console.log(a > b); //false
console.log(a < b); // true

console.log(b > d); //false
console.log(b >= d); //true


5 < 10 < 15 // true
// 5 < 10 是 true, true < 15 ,true 轉型成1 ,1 < 15,所以最後是 true
15 > 10 > 5 // false
// 15 > 10 是 true, true > 5 ,true 轉型成1 ,1 > 5,所以最後是 false

這類型的運算子也符合上面介紹的轉型規則,有一點點差異:

  • 兩者都是字串,則會依照字母的順序來進行比較。

  • 物件的話,會用 valueOf() 方法取到對應的值,如果沒有的話在用 toString() 轉型比較。

指派運算子

最後我們來補充一下,什麼事指派運算子呢?其實就是我們常常在用的一個等號(=)。

var a = 10 + 20;

它其實除了單純的指派以外,還能與算數運算子做結合:

var a = 10;

a += 10; 

console.log(a) // 20

這邊的 a+=10,其實是 a = a + 10,會將右側運算式,運算完成再指派給變數a。那當然除了加法其他的算數運算子也能做結合:

a -= b
// a = a - b

a *= b
// a = a * b

a /= b
// a = a / b

a %= b
// a = a % b

以上就是今天的內容啦,謝謝大家!我們明天見!


上一篇
新手學習JavaScript: day05 - 一元運算子與比較運算子之轉型轉到死(2)
下一篇
新手學習JavaScript: Day07 - 逗號運算子與邏輯運算子
系列文
純新手學習 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言